開始要動手啦~~~
這個組合可以在本機上使用,或是使用github上的codespaces
codespaces就直接參考我的repo的devcontainer
本機我是使用asdf裝了java,temurin-17的最新版
然後clojure就是安裝最新版
如果你要需要別的版本的話,工具在這
對了,如果用vscode的live share有問題,要多安裝,還有不能訪客登入
再來還有一個重點,Snippets!!!!
結合昨天說的RDD,真的是滿快速的~~
分享幾個我高頻使用到的snippets
快速將定義上一個執行的結果儲存
在Clojure裡有三個幫你定義好的快捷key,「*1 *2 *3」分別是「上一個執行的值 上上一個執行的值 上上上一個執行的值」XDD
參考
所以我將這個快捷建設定成def1
,我沒用過*2 3,我都是1用三次
他做的事很簡單,就是(def $1 *1)
<-- $1是vscode的保留字,意思是取代完你的遊標位置
所以我repl開發,我就能把東西存到記憶體或是覆蓋掉
快速將定義上一個執行的結果儲存x
跟上一個類似,就是存去x的變數而已(def x *1)
,所以叫defx
再來也是跟第一個類似,但更偷懶,變數也不用打了,只需要選起來就好defdbg1
<-- 這名字好難想= =(def $TM_SELECTED_TEXT *1)
<-- $TM_SELECTED_TEXT vscode的你選取的字
但這邊的用法比較特別,你需要在將字選起來之後,按F1(Command Palatte),然後insertSnippet
或是我綁快捷鍵
{
"key": "shift+cmd+a",
"command": "-notification.acceptPrimaryAction",
"when": "notificationToastsVisible"
},
{
"key": "shift+cmd+a",
"command": "editor.action.insertSnippet"
}
選起來(cmd+d/ctrl+w),然後shift+cmd+a,搞定
(明天會繼續分享calva的快捷鍵)
最後這個就比較複雜了,搭配範例可能清楚一點,因為這是配合Destructuring衍生出來的
(defn configure [val options]
(let [{:keys [debug verbose] :or {debug false, verbose false}} options]
(println "val =" val " debug =" debug " verbose =" verbose)))
(configure 12 {:debug true})
首先,我們要執行(evaluate)options,這樣options就在我們*1裡了
但我們要拿debug,而options還是個map
所以直接拿結果解釋(def $TM_SELECTED_TEXT (:$TM_SELECTED_TEXT *1))
那如果沒有呢?我們就自己看要預設什麼執行在repl,然後用上一招defdbg1
使用方法:
在vscode 按F1 可以呼叫 [Command Palatte]
Command Palatte > Snippets: Configure User Snippets > clojure.json(Clojure)
將以下設定複製貼上或是跟你的整合
完整版設定
{
"Def last execution result": {
"prefix": "def1",
"body": [
"(def $1 *1)"
],
"description": "Set last value to you defined"
},
"Def last execution result to x": {
"prefix": "defx",
"body": [
"(def x *1)"
],
"description": "Set last value to x"
},
"Def debugger 1": {
"prefix": "defdbg1",
"body": [
"(def $TM_SELECTED_TEXT *1)"
],
"description": "Def SELECTED_TEXT to *1"
},
"Def the SELECTED from last execution result as keys": {
"prefix": "defkeys",
"body": [
"(def $TM_SELECTED_TEXT (:$TM_SELECTED_TEXT *1))"
],
"description": "Def the SELECTED from last execution result as keys"
}
}